package exe3;

/**
 * @author oldliu
 * @since 1.0
 */
public class SuperMarket {
    String marketname;//商场名字
    String address;//地址
    Vip[] vips = new Vip[3];//会员数组，最多100个
    int count = 0;//会员人数

    //显示商场和他的会员信息
    public void show() {
        System.out.println("这个商场叫" + marketname + ",地址在：" + address);
        System.out.println("会员信息如下：");
        for (int i = 0; i < count; i++) {
            vips[i].show();
        }
    }

    //新会员
    //人满了，卡号重复了，手机重复了；添加成功
    //1-5:人满了，扩容数组
    public boolean add(Vip c) {
        if (checkCardNoRepeat(c.cardNo)) {
            //卡号重复，新会员添加失败！
            return false;
        }
        if (count >= vips.length) {
            //人满了，添加失败
            ///?
            System.out.println("扩容一次。。。。");
            //新空间
            Vip v[]=new Vip[(int) (vips.length*1.5+1)];
            //老空间的对象挪过去
            for (int i = 0; i < vips.length; i++) {
                v[i]=vips[i];
            }
            vips=v;//新数组的地址赋给vips
        }
        vips[count++] = c;
        return true;
    }

    //判断卡号是否重复
    //返回true,表示重复；返回false,表示不重复
    public boolean checkCardNoRepeat(String no) {
        for (int i = 0; i < count; i++) {
            if (vips[i].cardNo.equals(no)) {
                return true;
            }
        }
        return false;
    }

    //加分
    public boolean inc(int score, String cardNo) {
        for (int i = 0; i < count; i++) {
            if (vips[i].cardNo.equals(cardNo)) {
                vips[i].score += score;
                return true;
            }
        }
        return false;
    }

    //兑换礼品
    public String change(int awardtype, String cardNo) {
        for (int i = 0; i < count; i++) {
            if (vips[i].cardNo.equals(cardNo)) {//找到会员了
                if (awardtype == 1) {//第一种
                    if (vips[i].score >= 100) {//判断积分够不够
                        vips[i].score -= 100;//够，扣掉积分，返回礼品
                        return "餐巾纸一包";
                    }
                } else if (awardtype == 2) {
                    if (vips[i].score >= 400) {
                        vips[i].score -= 400;
                        return "剃须刀一把";
                    }
                } else if (awardtype == 3) {
                    if (vips[i].score >= 1000) {
                        vips[i].score -= 1000;
                        return "炒锅一个";
                    }
                }
            }
        }
        return null;//其他所有的情况，返回null,表示兑换失败！
    }

    //找到积分最高的顾客
    //方法怎么声明
    public Vip getBiggestScore() {
        if(count==0)
            return null;

        Vip max = vips[0];
        for (int i = 0; i < count; i++) {
            if (vips[i].score > max.score) {
                max=vips[i];
            }
        }
        return max;
    }
}
